#ifndef _MAIN_H_
#define _MAIN_H_
#include <Arduino.h>
#include <esp_sleep.h>


// 配置参数
#define WAKEUP_PIN 13      // 使用GPIO13作为唤醒引脚
#define SLEEP_DELAY_MS 200 // 进入睡眠前的延迟(ms)，确保串口信息发送完成
#define SLEEP_DELAY_SECONDS 30// 深度睡眠倒计时时间(秒)

#pragma pack(1)

typedef enum {
    BLE_SEND_ECG_DATA,// 处理ECG数据
	BLE_SEND_ACC_DATA,// 处理加速度数据
	BLE_SEND_BREATHE_DATA,// 处理呼吸数据
	BLE_SEND_PPG_DATA,// 处理PPG数据
	BLE_SEND_HR_DATA,// 处理心率数据
	BLE_SEND_SO2_DATA,// 处理血氧数据
	MSG_REC_ACC_DATA, // 接收加速度数据
	MSG_REC_NFC_DETECT, // 接收NFC数据
	MSG_REC_NFC_DATA, // 接收NFC数据
	MSG_RESP_CALCULATE, // 呼吸率计算
	MSG_BATTERY_PERCENTAGE, // 电池百分比计算
} sys_event_type_t;

typedef struct {
	sys_event_type_t type;
    float* Fdata;
	unsigned int heartRate;//心率
	unsigned int RRinterval;//心率间隔
	int32_t so2;//心率间隔
	uint8_t* ecgdata;
	uint16_t size;
	uint32_t* u32_data;
	uint32_t* u32_data1;
} sys_event_t;

typedef struct
{
    float     acc_x;
    float     acc_y;
    float     acc_z;
}ACC_DATA_T;
#pragma pack()

// 校准后的心率、血氧值、呼吸率
extern uint32_t DateAndTime;
extern uint32_t calibrated_hr;
extern uint32_t calibrated_so2;
extern uint32_t calibrated_resp;

#endif
